﻿Imports System.Environment

Module Module1
    ' Paramètres de l'application
    Private ctDSN_AEM As String
    Private szSQL As String
    Private rs As ADODB.Recordset = Nothing
    Private nAgence As Integer

    Sub Main()

        ' lire les paramètres de l'application
        ctDSN_AEM = My.Settings.ConnectionBD

        ' tester la connection avec la BD MySQL
        If IsConnectionOK() = False Then
            ' fin programme
            End
        End If

        ' ----- A chaque debut de mois, effacer le log
        If Now().Day = 1 Then
            szSQL = "truncate t_log"
            ExecQuery(ctDSN_AEM, szSQL)
        End If

        ' ----- LETTRAGE AUTOMATIQUE : 1 agence par jour, 
        If Now().DayOfWeek = 0 Then
            ' Dimanche -> agence 7 et 8
            LettrerAgence(7)
            LettrerAgence(8)
        Else
            ' Lundi (1) à samedi (6)
            LettrerAgence(Now().DayOfWeek)
        End If

        ' ----- CONFIRMATION DES RESERVATIONS
        szSQL = "CALL spUPD_RESERVATIONS()"
        ExecQuery(ctDSN_AEM, szSQL)

    End Sub

    Private Sub LettrerAgence(noAgence As Integer)
        Dim nbLus As Integer = 0
        Dim nbLettres As Integer = 0
        Dim rsEleves As ADODB.Recordset = Nothing

        szSQL = "insert t_log (proc,msg) values ('aem_nuit','- Début lettrage agence : " & noAgence & "');"
        ExecQuery(ctDSN_AEM, szSQL)

        ' parcourir les élève ACTIFS de l'agence
        szSQL = "SELECT * FROM eleves WHERE agence=" & noAgence & " AND cd_cli > 100000 AND statut < 10"
        GetRecordset(ctDSN_AEM, szSQL, rsEleves)
        Do While Not rsEleves.EOF
            nbLus += 1
            ' lettrer toutes les écritures à cette date
            szSQL = "CALL spUPD_ELEVES_LETTRER(" & rsEleves.Fields("cd_cli").Value & ")"
            GetRecordset(ctDSN_AEM, szSQL, rs)
            If rs.RecordCount > 0 Then
                If rs.Fields("NB").Value > 0 Then
                    nbLettres += 1
                End If
            End If
            rsEleves.MoveNext()
        Loop

        szSQL = "insert t_log (proc,msg) values ('aem_nuit','- Fin lettrage : " & nbLus & " élèves lus, " & nbLettres & " lignes lettrées.');"
        ExecQuery(ctDSN_AEM, szSQL)

    End Sub

    ' Tester la connection avec la base de données
    Private Function IsConnectionOK() As Boolean

        Dim conn As ADODB.Connection

        'enable error handler
        On Error GoTo ErrorHandler

        IsConnectionOK = False
        conn = New ADODB.Connection

        ' tester la connection avec MySQL
        conn.Open(ctDSN_AEM)
        conn.Close()
        ' conn.Dispose()
        IsConnectionOK = True
        Exit Function

ErrorHandler:
        szSQL = "insert t_log (proc,msg) values ('daterdv','Erreur lors de la connection à la BD : " & Err.Number & ":" & Err.Description & "');"
        ExecQuery(ctDSN_AEM, szSQL)
        End

    End Function

End Module
